package com.lcredu.lcrliving.commodity.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * 商品分类表
 *
 * @author lcr
 * @email lcr@gmail.com
 * @date 2023-09-17 16:24:06
 */
@Data
@TableName("commodity_category")
public class CategoryEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * id
	 */
	@TableId
	private Long id;
	/**
	 * 名称
	 */
	private String name;
	/**
	 * 父分类 id
	 */
	private Long parentId;
	/**
	 * 层级
	 */
	private Integer catLevel;
	/**
	 * 0 不显示，1 显示]
	 * 1. 如果我们没有在application.yml配置逻辑未删除和删除的值,也可以在这里进行配置
	 * @TableLogic(value = "1",delval = "0")
	 * 意思是逻辑未删除为1，逻辑已删除为0
	 * 同时，你发出的刷新sql语句也就会加上一条语句判断:
	 */
	@TableLogic
	private Integer isShow;
	/**
	 * 排序
	 */
	private Integer sort;
	/**
	 * 图标
	 */
	private String icon;
	/**
	 * 统计单位
	 */
	private String proUnit;
	/**
	 * 商品数量
	 */
	private Integer proCount;

	/**
	 * 增加一个属性childrenCategories
	 * 1.childrenCategories表示某个分类的子分类集合
	 * 2.并没有对应表的字段
	 * 3.@TableField(exist = false)表示childrenCategories不对应表的字段
	 * 4. @JsonInclude(JsonInclude.Include.NON_EMPTY)
	 * 		如果childrenCategories为空数组就无须返回,抑制级联器最后一页的空白区
	 */
	@JsonInclude(JsonInclude.Include.NON_EMPTY)
	@TableField(exist = false)
	private List<CategoryEntity>childrenCategories;

}
